Model-driven architecture (MDA) is an approach to software development advocated by the Object Management Group (OMG). It provides a set of guidelines for structuring specifications in the form of models. The approach suggests describing a system's specifications using a platform independent model (PIM). A PIM is usually specified in a language defined using the Meta Object Facility (MOF) by OMG. Once a system has been specified using a PIM, a platform is then chosen to realize it, producing what is referred to as a platform specific model (PSM). The process of going from a PIM to a PSM is called model-to-model transformation and can usually be automated. In fact, several model-to-model transformations may be needed to take the initial PIM through intermediate models to the ultimate PSM. This effectively creates a transformation chain.
The traditional way to implement transformation chains is by making every transformation implementation aware of the next transformation in the chain so it can properly pass its output as an input to the next transformation. However, tying the two transformations together reduce the possibility of reusing each transformation individually and the possibility of configuring each of them in different chains.
Another problem here is that transformations may be designed in some ways that complicate chaining. For example, some transformations might not clearly separate their inputs from their outputs (like those changing the input models directly). Others may have built-in post-processing (like serializes their results), which is typically done only if the transformation is a terminal one.
What is needed is a flexible pattern for chaining transformations, guidelines for structuring transformations to make them chainable and a framework for configuring such transformation chains.